import { setLocalToken, getLocalToken } from '@/utils/token';
import { create } from 'zustand';

interface AuthStore {
	token: string;
	setToken(t: string): void;
	getToken(): string;
}

export const useAuthStore = create<AuthStore>((set, get) => {
	return {
		token: getLocalToken(),
		getToken() {
			let token = get().token;
			if (!!token) {
				return token;
			}
			try {
				token = getLocalToken();
				if (token) {
					set({
						token
					});
				}
			} catch (e) {
				console.log(e);
			}
			return token;
		},
		setToken(token: string) {
			try {
				setLocalToken(token);
			} catch (e) {
				console.log(e);
			}
			set({
				token
			});
		}
	};
});

